#include <iostream>
#include <string>
using namespace std;

int main()
{
	string s1 = "hellow world";
	cout << s1.size() << "   " << s1.capacity() << endl;
	string s2 = s1;
	s2.reserve(5);
	cout << s2.size() << "   " << s2.capacity() << endl;
	s2.reserve(100);
	cout << s2.size() << "   " << s2.capacity() << endl;
	s2.reserve(10);
	cout << s2.size() << "   " << s2.capacity() << endl;
	s2.resize(100);
	cout << s2.size() << "   " << s2.capacity() << endl;
	s2.resize(5);
	cout << s2.size() << "   " << s2.capacity() << endl;
	string s3 = s1;
	cout << s1[3] << endl;
	cout << s3.at(3) << endl;
	string s4 = s1;
	s4.append("xxx");
	cout << s4 << endl;
	s1.insert(s1.begin() + 5, 'a');
	cout << s1 << endl;
	return 0;
}

//class Solution {
//public:
//    string addStrings(string num1, string num2) {
//        int n1 = num1.size() - 1;
//        int n2 = num2.size() - 1;
//        string num3;
//        int next = 0;
//        while (n1 >= 0 || n2 >= 0 || next)
//        {
//            int p1 = 0;
//            int p2 = 0;
//            if (n1 >= 0)
//            {
//                p1 = num1[n1--] - '0';
//            }
//            if (n2 >= 0)
//            {
//                p2 = num2[n2--] - '0';
//            }
//            num3 += ((p1 + p2 + next) % 10 + '0');
//            next = (p1 + p2 + next) / 10;
//        }
//        reverse(num3.begin(), num3.end());
//        return num3;
//    }
//};

//class Solution {
//public:
//    string reverseStr(string s, int k) {
//        int n = s.size();
//        for (int i = 0; i < n; i += (2 * k))
//        {
//            if (i + k <= s.size())
//            {
//                reverse(s.begin() + i, s.begin() + i + k);
//            }
//            else
//            {
//                reverse(s.begin() + i, s.end());
//            }
//        }
//        return s;
//    }
//};
//
//class Solution {
//public:
//    string addStrings(string num1, string num2) {
//        int n1 = num1.size() - 1;
//        int n2 = num2.size() - 1;
//        string num3;
//        int next = 0;
//        while (n1 >= 0 || n2 >= 0 || next)
//        {
//            int p1 = 0;
//            int p2 = 0;
//            if (n1 >= 0)
//            {
//                p1 = num1[n1--] - '0';
//            }
//            if (n2 >= 0)
//            {
//                p2 = num2[n2--] - '0';
//            }
//            num3 += ((p1 + p2 + next) % 10 + '0');
//            next = (p1 + p2 + next) / 10;
//        }
//        reverse(num3.begin(), num3.end());
//        return num3;
//    }
//    string multiply(string num1, string num2) {
//        int n1 = num1.size();
//        int n2 = num2.size();
//        long long n3 = 0;
//        long long n4 = 0;
//        for (int i = 0; i < n1; i++)
//        {
//            n3 = n3 * 10 + num1[i] - '0';
//        }
//        for (int i = 0; i < n2; i++)
//        {
//            n4 = n4 * 10 + num2[i] - '0';
//        }
//        if (n3 == 0 || n4 == 0)
//        {
//            return "0";
//        }
//        string ret;
//        while (n3)
//        {
//            int n = n3 % 10;
//            n3 /= 10;
//            while (n--)
//            {
//                ret = addStrings(ret, num2);
//            }
//            num2 += '0';
//        }
//        return ret;
//    }
//};
//
//class Solution {
//public:
//    string reverseWords(string s) {
//        int n = s.size();
//        int slow = 0;
//        int fast = 0;
//        while (fast <= n)
//        {
//            if (s[fast] == ' ' || s[fast] == 0)
//            {
//                reverse(s.begin() + slow, s.begin() + fast);
//                slow = fast + 1;
//            }
//            fast++;
//        }
//        return s;
//    }
//};
//
//class Solution {
//public:
//    string addStrings(string num1, string num2) {
//        int n1 = num1.size() - 1;
//        int n2 = num2.size() - 1;
//        string num3;
//        int next = 0;
//        while (n1 >= 0 || n2 >= 0 || next)
//        {
//            int p1 = 0;
//            int p2 = 0;
//            if (n1 >= 0)
//            {
//                p1 = num1[n1--] - '0';
//            }
//            if (n2 >= 0)
//            {
//                p2 = num2[n2--] - '0';
//            }
//            num3 += ((p1 + p2 + next) % 10 + '0');
//            next = (p1 + p2 + next) / 10;
//        }
//        reverse(num3.begin(), num3.end());
//        return num3;
//    }
//    string multiply(string num1, string num2) {
//        string ret;
//        if (num1[0] == '0' || num2[0] == '0')
//        {
//            return "0";
//        }
//        int i = num2.size() - 1;
//        while (i >= 0)
//        {
//            int n = num2[i] - '0';
//            while (n--)
//            {
//                ret = addStrings(ret, num1);
//            }
//            num1 += '0';
//            i--;
//        }
//        return ret;
//    }
//};
//
//int main()
//{
//    Solution s;
//    cout << s.reverseStr("abcdefg", 2) << endl;
//    return 0;
//}

//int main()
//{
//	/*string s = "abcdef";
//	reverse(s.begin(), s.begin() + 4);
//	cout << s << endl;*/
//	string s = "abcdef";
//	cout << s.find('t') << endl;
//	return 0;
//}